package com.yya.ratelimiter.service;

import com.yya.ratelimiter.annotation.RateLimit;
import org.aspectj.lang.reflect.MethodSignature;

/**
 * @Autor: yuanyongan
 *
 * @Description:
 * @Date 2023/1/12 10:36
 */

public interface LimitationAlgorithm {
    /**
     * 基于限流算法，判断请求是否可以通过
     * @param rateLimit 限流注解参数
     * @param signature 切片参数，本项目限流都时基于切片实现注解的功能
     */
    void acquire(RateLimit rateLimit, MethodSignature signature);

    /**
     * 打印接收请求后的日志
     */
    void logInfo();
}
